#include <iostream>
#include "BloqArch/ArchBloques.h"
#include "HeaderDatos.h"
#include "BloqueDatosHash.h"
#include "RegistroDatos.h"

using namespace std;


int main(int argc, char* argv[]){

	cout << "Prueba de la libreria de archivos en bloques" << endl;

	cout << "Crea el archivo de bloques" << endl;
	HeaderDatos h;
	ArchBloques ab;
	ab.crearArch(h, "uno.bin");

	cout << "Se crean los datos a guardar" << endl;
	RegistroDatos* r1 = new RegistroDatos(1, "uno");
	RegistroDatos* r2 = new RegistroDatos(2, "dos");
	RegistroDatos* r3 = new RegistroDatos(3, "tres");
	RegistroDatos* r4 = new RegistroDatos(4, "cuatro");
	RegistroDatos* r5 = new RegistroDatos(5, "cinco");

	cout << "Se guardan los datos en el bloque" << endl;
	BloqueDatosHash bHash;
	bHash.insertarRegistro(r1);
	bHash.insertarRegistro(r2);
	bHash.insertarRegistro(r3);
	bHash.insertarRegistro(r4);
	bHash.insertarRegistro(r5);

	cout << "Se guarda el bloque en el archivo de disco" << endl;
	ab.guardar(bHash, 1);

	cout << "Actualiza la cabecera y la guarda a disco" << endl;
	h.setCantBloques(2);	// 1 la cabecera, 2 el bloque de datos
	ab.guardar(h, 0);
//	ab.cerrar();

	//-------------------------------

	cout << "\nLee el contenido del disco en un nuevo bloque" << endl;
	BloqueDatosHash bh2;
	ab.leer(bh2, 1);

	cout << "Busca un registro por ID" << endl;
	RegistroDatos rBuscar(4, "");
	RegistroDatos r0 = bh2.getRegistroPorID(rBuscar);

	cout << "Compara el recuperado con el original: "
		<< r0.getDato() << " == " << r4->getDato() << endl;

	cout << "Fin." << endl;
	return 0;
}

